home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 October: Mac OS SDK / Dev.CD Oct 96 SDK / Dev.CD Oct 96 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / ODF / Found / ODUtils / Unused / ODUtils.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-08-16  |  3.5 KB  |  203 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        ODUtils.cpp
  3.  
  4.     Contains:    Utility functions for objects
  5.  
  6.     Owned by:    Jens Alfke
  7.  
  8.     Copyright:    © 1994 - 1995 by Apple Computer, Inc., all rights reserved.
  9.         
  10. */
  11.  
  12.  
  13. #ifndef _ODUTILS_
  14. #include "ODUtils.h"
  15. #endif
  16.  
  17. #ifndef SOM_ODFrame_xh
  18. #include <Frame.xh>
  19. #endif
  20.  
  21. #ifndef SOM_ODShape_xh
  22. #include <Shape.xh>
  23. #endif
  24.  
  25. #ifndef SOM_ODTransform_xh
  26. #include <Trnsform.xh>
  27. #endif
  28.  
  29. #ifndef SOM_Module_OpenDoc_Errors_defined
  30. #include <ErrorDef.xh>
  31. #endif
  32.  
  33. #ifndef SOM_ODDocument_xh
  34. #include <Document.xh>
  35. #endif
  36.  
  37. #ifndef SOM_ODContainer_xh
  38. #include <ODCtr.xh>
  39. #endif
  40.  
  41. #ifndef SOM_ODStorageSystem_xh
  42. #include <ODStor.xh>
  43. #endif
  44.  
  45. #ifndef _EXCEPT_
  46. #include <Except.h>
  47. #endif
  48.  
  49. #ifndef _ODDEBUG_
  50. #include <ODDebug.h>
  51. #endif
  52.  
  53. #ifndef SOM_ODFacet_xh
  54. #include <Facet.xh>
  55. #endif
  56.  
  57. #ifndef SOM_ODWindow_xh
  58. #include <Window.xh>
  59. #endif
  60.  
  61. #ifndef SOM_ODDraft_xh
  62. #include <Draft.xh>
  63. #endif
  64.  
  65. #ifndef SOM_ODStorageUnit_xh
  66. #include "StorageU.xh"
  67. #endif
  68.  
  69. #ifndef _TEMPOBJ_
  70. #include <TempObj.h>
  71. #endif
  72.  
  73.  
  74. void ODAcquireObject(Environment* ev, ODRefCntObject* object)
  75. {
  76.     if (object != kODNULL) 
  77.     {
  78.         object->Acquire(ev);
  79.     }
  80. }
  81.  
  82.  
  83. void ODRelease( Environment *ev, ODRefCntObject* obj )
  84. {
  85.     if( obj )
  86.         obj->Release(ev);
  87. }
  88.  
  89.  
  90. void ODFinalRelease( Environment *ev, ODRefCntObject* obj )
  91. {
  92.     if( obj ) {
  93. #if ODDebug
  94.         ODULong ref = obj->GetRefCount(ev);
  95.         if( ref != 1 ) {
  96.             WARN("%s %p's refcount is %ld, not 1",
  97.                     obj->somGetClassName(),obj,ref);
  98.         }
  99. #endif
  100.         obj->Release(ev);
  101.     }
  102. }
  103.  
  104.  
  105. void ODSafeReleaseObject( ODRefCntObject *obj )
  106. {
  107.     if( obj ) {
  108.         TRY{
  109.             obj->Release(somGetGlobalEnvironment());
  110.         }CATCH_ALL{
  111.             // do nothing
  112.         }ENDTRY
  113.     }
  114. }
  115.  
  116.  
  117. void ODTransferReference( Environment *ev, ODRefCntObject *oldObj, ODRefCntObject *newObj )
  118. {
  119.     if( oldObj != newObj ) {
  120.         if( newObj )
  121.             newObj->Acquire(ev);
  122.         if( oldObj ) {
  123.             TRY{
  124.                 oldObj->Release(ev);
  125.             }CATCH_ALL{
  126.                 if( newObj ) newObj->Release(ev);
  127.                 RERAISE;
  128.             }ENDTRY
  129.         }
  130.     }
  131. }
  132.  
  133.  
  134. ODShape* ODCopyAndRelease( Environment *ev, ODShape *s )
  135. {
  136.     ASSERT(s!=kODNULL, kODErrIllegalNullInput);
  137.     if( s->GetRefCount(ev) == 1 )
  138.         return s;
  139.     TempODShape tempS = s;        // Ensures that s gets released
  140.     ODShape *copy = s->Copy(ev);
  141.     return copy;
  142. }
  143.  
  144. ODTransform* ODCopyAndRelease( Environment *ev, ODTransform *t )
  145. {
  146.     ASSERT(t!=kODNULL, kODErrIllegalNullInput);
  147.     if( t->GetRefCount(ev) == 1 )
  148.         return t;
  149.     TempODTransform tempT = t;        // Ensures that t gets released
  150.     ODTransform *copy = t->Copy(ev);
  151.     return copy;
  152. }
  153.  
  154. #if ODDebug || !defined(_OD_IMPL_)
  155. ODBoolean ODObjectsAreEqual(Environment* ev, ODObject* a, ODObject* b)
  156. {
  157.     return (a == b) || (a && a->IsEqualTo(ev,b));
  158. }
  159. #endif
  160.  
  161.  
  162. ODPart* ODAcquirePart( Environment *ev, ODFrame *f )
  163. {
  164.     return f ?f->AcquirePart(ev) :kODNULL;
  165. }
  166.  
  167. ODPart* ODAcquirePart( Environment *ev, ODFacet *f )
  168. {
  169.     return f ?f->GetFrame(ev)->AcquirePart(ev) :kODNULL;
  170. }
  171.  
  172.  
  173. ODDraft* ODGetDraft( Environment *ev, ODStorageUnit *su )
  174. {
  175.     return su ?su->GetDraft(ev) :kODNULL;
  176. }
  177.  
  178. ODDraft* ODGetDraft( Environment *ev, ODPersistentObject *po )
  179. {
  180.     return po ?po->GetStorageUnit(ev)->GetDraft(ev) :kODNULL;
  181. }
  182.  
  183.  
  184. ODSession* ODGetSession( Environment *ev, ODStorageUnit *su )
  185. {
  186.     return su ?su->GetSession(ev) :kODNULL;
  187. }
  188.  
  189. ODSession* ODGetSession( Environment *ev, ODPersistentObject *po )
  190. {
  191.     return po ?po->GetStorageUnit(ev)->GetSession(ev) :kODNULL;
  192. }
  193.  
  194. ODSession* ODGetSession( Environment *ev, ODDocument *d )
  195. {
  196.     return d ?d->GetContainer(ev)->GetStorageSystem(ev)->GetSession(ev) :kODNULL;
  197. }
  198.  
  199. ODSession* ODGetSession( Environment *ev, ODDraft *d )
  200. {
  201.     return d ?d->GetDocument(ev)->GetContainer(ev)->GetStorageSystem(ev)->GetSession(ev) :kODNULL;
  202. }
  203.